package cn.tedu.bank.service;

import cn.tedu.bank.exceptions.MoneyNotEnoughException;
import cn.tedu.bank.exceptions.TransferException;

/**
 * 此处写的方法的方法名必须见名知意，能够体现出具体的业务是做什么的
 * transfer：转账  withdraw：取款
 * 账户业务类（负责处理业务）
 */
public interface AccountService {
    /**
     * 完成银行账户转账业务
     * @param fromActno 转出账号
     * @param toActno 转入账号
     * @param money 转账金额
     */
    /**
     * 将指定金额从一个账户转移到另一个账户
     *
     * @param fromActno 起始账户号码，不能为空
     * @param toActno   目标账户号码，不能为空
     * @param money     转账金额，必须为正数
     * @throws MoneyNotEnoughException 如果起始账户余额不足，则抛出此异常
     * @throws TransferException       如果转账过程中发生其他错误，则抛出此异常
     *                                 <p>
     *                                 注意：此方法假设fromActno和toActno是有效的账户号码，且money是合法的转账金额
     *                                 它不处理账户号码的有效性检查或金额的合法性验证
     *                                 这些检查应该在调用此方法之前完成
     */
    void transfer(String fromActno, String toActno, double money) throws MoneyNotEnoughException, TransferException;
}
